キャッシュ・エージェントの起動および停止
キャッシュ・エージェントと呼ばれるTimesTenプロセスは、キャッシュ・グループのロードやリフレッシュなどの非同期のキャッシュ処理を実行します(『Oracle TimesTen In-Memory Databaseアーキテクチャ概要』のCache Connect to Oracleに関する章を参照)。Cache Connect to Oracle処理の多くは、キャッシュ・エージェントを使用せずに、TimesTenで直接実行できます。
次の1つ以上の条件が当てはまる場合は、キャッシュ・グループが含まれているデータ・ストアごとに、個別のキャッシュ・エージェントを起動する必要があります。
次の項で説明するように、DSNのキャッシュ・エージェントは、コマンドラインまたはプログラムから起動できます。
また、Cache Administratorを使用すると、ブラウザからもキャッシュ・エージェントを起動できます。詳細は、「Cache Administrator」を参照してください。
注意: アクセス制御を有効にしてTimesTenをインストールした場合、キャッシュ・エージェントを起動または停止するには、データ・ストアに対してADMIN権限が必要です。また、TimesTenユーザー名はOracleユーザー名と一致している必要があります(これは、内部ユーザーおよび外部ユーザーの両方に適用されます)。詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のアクセス制御と非rootインストールに関する章を参照してください。
コマンドラインからのキャッシュ・エージェントの制御
コマンドラインからキャッシュ・エージェントを制御するには、ttAdminユーティリティを使用します。ttAdminユーティリティを使用して、次のタスクを実行できます。
ttAdminユーティリティの使用方法の詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』を参照してください。
コマンドラインからのキャッシュ管理ユーザーIDおよびパスワードの設定
次のいずれかのキャッシュ・グループ・タイプを使用している場合は、「Oracleユーザーの作成および権限の設定」で示されているOracle権限を持つキャッシュ管理ユーザー・アカウントが必要です。
キャッシュ管理ユーザーIDは、次のルールに従っている必要があります。
キャッシュ管理パスワードは、次のルールに従っている必要があります。
キャッシュ・エージェントを起動する前にキャッシュ管理ユーザーIDおよびパスワードを設定します。次の構文を使用します。
ttAdmin -cacheUidPwdSet -cacheUid cacheUid -cachePwd cachePwd DSN
注意: データ・ストア内に自動リフレッシュ・キャッシュ・グループまたはAWTキャッシュ・グループが存在している場合、キャッシュ管理ユーザーIDおよびパスワードを再設定することはできません。これらのキャッシュ・グループを削除してから、キャッシュ管理ユーザーIDおよびパスワードを再設定する必要があります。
例3.14
ttAdmin -cacheUidPwdSet -cacheUid testuser -cachePwd mypass myOraCache
キャッシュ管理ユーザーIDおよびパスワードを変更する場合は、キャッシュ・エージェントを再起動する必要があります。
注意: データ・ストアにキャッシュ・グループが存在しない場合は、キャッシュ管理ユーザーIDおよびパスワードを設定しないでください。キャッシュ・グループが存在しない場合にキャッシュ管理ユーザーIDおよびパスワードを設定すると、それらのキャッシュ管理ユーザーIDおよびパスワードがOracleデータベースに対して使用され、検証されます。
コマンドラインからのキャッシュ・エージェントの起動
コマンドラインからキャッシュ・エージェントを起動するには、次の構文を使用します。
ttAdmin -cacheStart DSN
例3.15
ttAdmin -cacheStart myOraCache
相対パスのDSNで識別されるデータ・ストアのキャッシュ・エージェントを起動しようとすると、TimesTenはその実行位置から相対的にデータ・ストアを検索し、失敗します。たとえば、Windowsで、DSNのデータ・ストアにパスをDataStore=.\dsn1と指定し、次のコマンドでキャッシュ・エージェントを起動しようとしたとします。
ttAdmin -cacheStart dsn1
キャッシュ・エージェントは、install_dir\srv\dsn1でデータ・ストアを検索します。その位置ではデータ・ストアを検出できないため、エージェントは起動されません。UNIXでは、キャッシュ・エージェントは次の位置を検索します。
/var/TimesTen/ttversion/bits
コマンドラインからのキャッシュ・エージェントの停止
キャッシュ・エージェントを停止するには、次の構文を使用します。
ttAdmin -cacheStop DSN
例3.16
ttAdmin -cacheStop myOraCache
注意: AUTOREFRESH機能を使用している場合は、キャッシュ・グループの削除または変更後すぐにキャッシュ・エージェントを停止しないでください。2分以上待機してください。キャッシュ・エージェントでは、
AUTOREFRESHによって使用されたOracleオブジェクトをクリーンアップするためにこの時間が必要です。
コマンドラインからのキャッシュ・エージェント再起動ポリシーの設定
-cachePolicyオプションを指定してttAdminを使用すると、Times Ten Data Managerデーモンで、Times Ten Data Managerを起動するたびにキャッシュ・エージェントが起動されるようにできます。次の構文を使用します。
ttAdmin -cachePolicy always DSN
例3.17
ttAdmin -cachePolicy always myOraCache
注意: キャッシュ・グループが自動リフレッシュされる場合は、ttAdmin -cachePolicyをコールする前にキャッシュ管理ユーザーIDおよびパスワードを設定する必要があります。
キャッシュ・エージェントの自動起動を無効にするには、次の構文を使用します。
ttAdmin -cachePolicy manual DSN
例3.18
ttAdmin -cachePolicy manual myOraCache
プログラムからのキャッシュ・エージェントの制御
データ・ストアのキャッシュ・エージェントをプログラムから制御するには、まず、データ・ストアに接続します。ttCacheUidPwdSet、ttCacheStart、ttCacheStopまたはttCachePolicyプロシージャを使用して、次のタスクを実行します。
注意: アクセス制御が有効になっている場合は、キャッシュ・エージェントおよびレプリケーション・エージェントの起動、停止およびポリシー設定にADMIN権限が必要です。また、キャッシュ管理ユーザーIDおよびパスワードの設定にもADMIN権限が必要です。
ttCacheUidPwdSet、ttCacheStart、ttCacheStopおよびttCachePolicyプロシージャの詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』の組込みプロシージャに関する章を参照してください。
プログラムからのキャッシュ管理ユーザーIDおよびパスワードの設定
次のいずれかのキャッシュ・グループ・タイプを使用している場合は、「Oracleユーザーの作成および権限の設定」で示されているOracle権限を持つキャッシュ管理ユーザー・アカウントが必要です。
キャッシュ管理ユーザーIDは、次のルールに従っている必要があります。
キャッシュ管理パスワードは、次のルールに従っている必要があります。
キャッシュ・エージェントを起動する前にキャッシュ管理ユーザーIDおよびパスワードを設定します。ttCacheUidPwdSetプロシージャを使用します。
例3.19
この例では、データ・ストアは、接続ハンドルhdbcで識別されます。キャッシュ管理ユーザーIDはtestuser、キャッシュ管理ユーザー・パスワードはmypassです。
sprintf( stmt, "CALL ttCacheUidPwdSet('testuser','mypass')");
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *) stmt, SQL_NTS );
sprintf( stmt, "CALL ttCacheStart()" );
rc = SQLAllocStmt( hdbc, &hstmt2 );
rc = SQLExecDirect( hstmt2, (SQLCHAR *) stmt, SQL_NTS );
プログラムからのキャッシュ・エージェントの起動
キャッシュ・エージェントを起動するには、ttCacheStartプロシージャを使用します。
例3.20
この例では、データ・ストアは接続ハンドルhdbcで識別されます。
sprintf( stmt, "CALL ttCacheStart()" );
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *) stmt, SQL_NTS );
注意: 自動コミットを無効にしている場合は、ttCacheStartをコールする前とコールした後の両方でコミットする必要があります。
プログラムからのキャッシュ・エージェントの停止
キャッシュ・エージェントを停止するには、ttCacheStopプロシージャを使用します。
例3.21
sprintf( stmt, "CALL ttCacheStop()" );
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *) stmt, SQL_NTS );
ttCacheStopプロシージャには、オプションのパラメータstopTimeoutがあります。このパラメータで、キャッシュ・エージェントが停止するまでTimesTenデーモンが待機する時間を指定します。キャッシュ・エージェントが指定した時間内に停止しない場合、そのキャッシュ・エージェントはTimesTenデーモンによって停止されます。stopTimeoutのデフォルト値は100秒です。値0(ゼロ)は、永久に待機することを示します。
例3.22
キャッシュ・エージェントを停止し、stopTimeoutを160秒に設定するには、次のように入力します。
sprintf( stmt, "CALL ttCacheStop(160)" );
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *) stmt, SQL_NTS );
注意: 自動コミットを無効にしている場合は、ttCacheStopをコールする前とコールした後の両方でコミットする必要があります。
注意: AUTOREFRESH機能を使用している場合は、キャッシュ・グループの削除または変更後すぐにキャッシュ・エージェントを停止しないでください。2分以上待機してください。キャッシュ・エージェントでは、
AUTOREFRESHによって使用されたOracleオブジェクトをクリーンアップするためにこの時間が使用されます。
プログラムからのキャッシュ・エージェント再起動ポリシーの設定
ttCachePolicyプロシージャをコールすることによって、キャッシュ・エージェント再起動ポリシーを設定できます。データ・ストアの再起動ポリシーは、「コマンドラインからのキャッシュ・エージェント再起動ポリシーの設定」のttAdmin -cachePolicyで説明されている方法と同様の方法で、manual (デフォルト)またはalways に設定できます。
例3.23
hdbc接続ハンドルで識別されるデータ・ストアのキャッシュ・エージェント再起動ポリシーをalwaysに設定するには、次のように入力します。
sprintf( stmt, "CALL ttCachePolicy ('always')");
rc = SQLAllocStmt( hdbc, &hstmt );
rc = SQLExecDirect( hstmt, (SQLCHAR *) stmt, SQL_NTS );